// 首字母大写
function ucfirst(l1) {
  if (l1.length > 0) {
    var first = l1.substr(0, 1).toUpperCase();
    var spare = l1.substr(1, l1.length);
    return first + spare;
    // return first;
  }
}
// 格式化性别显示
function formatGender(mark) {
  if (mark === '1' || mark === 1) {
    return '男'
  } else if (mark === '0' || mark === 0) {
    return '女'
  } else {
    return ''
  }
}
//两个时间相差天数 兼容firefox chrome
function datedifference(sDate1, sDate2) { //sDate1和sDate2是2006-12-18格式 
  var dateSpan,
    tempDate,
    iDays;
  sDate1 = sDate1.substring(0, 19);
  sDate1 = sDate1.replace(/-/g, '/');
  sDate2 = sDate2.substring(0, 19);
  sDate2 = sDate2.replace(/-/g, '/');
  sDate1 = Date.parse(sDate1);
  sDate2 = Date.parse(sDate2);
  dateSpan = sDate2 - sDate1;
  dateSpan = Math.abs(dateSpan);
  iDays = (dateSpan / (24 * 3600 * 1000))
  iDays = iDays < 0.6 ? iDays.toFixed(1) : Math.floor(iDays)
  return iDays
}

//获取时间目录
function getDirByTime() {
  let time = new Date()
  let dir = time.getFullYear() + '/' + (time.getMonth()) + '/' + time.getDate()
  return dir
}
// 根据当前时间获得起始时间
function getDate(type) {
  const date = new Date();
  let year = date.getFullYear();
  let month = date.getMonth() + 1;
  let day = date.getDate();
  let hh = date.getHours()
  let mm = date.getMinutes()

  if (type === 'start') {
    year = year - 60;
  } else if (type === 'end') {
    year = year + 2;
  }
  month = month > 9 ? month : '0' + month;;
  day = day > 9 ? day : '0' + day;
  hh = hh > 9 ? hh : '0' + hh;
  mm = mm > 9 ? mm : '0' + mm;
  return `${year}-${month}-${day} ${hh}:${mm}`;
}

//判断验证是否符合要求
function validate(ruleObj, value) {
  console.log(ruleObj.rule, value)
  if (!ruleObj.rule.test(value)) {
    //提示信息 
    uni.showToast({
      icon: "none",
      title: ruleObj.msg,
    })
    return false;
  }
  return true;
}

function GetMacAdress() {
  return new Promise((resolve,reject)=>{
    plus.device.getInfo({
    		success:function(e){
          resolve(e)
    		},
    		fail:function(e){
          reject(e)
    		}
    	});
  })
 
}
// 人脸识别
function faceLicense(type) {
  const PPFace = uni.requireNativePlugin('PP-BaiduFace');

  var config = {
    licenseName: 'idl-license',
    licenseSuffix: 'face-android',
    licenseId: 'facelive123-face-android',
    liveActionArray: ["Eye"],
    bgColor: "#56445D", //android背景颜色，ios需要修改资源图片完成
    textColor: "#C5E99B", //文本已经圆框颜色
    isSound: false, //默认是否开启语音提示 默认值：false
    AutoClip: true, //自动裁剪用户脸部区域 默认：false
    isBackCamera: false, //1.43版本加入 启用后置摄像头 默认false
    hasPic: true // 1.59版本加入 android采集返回拍照（无黑边）原图，ios下个版本加入
  }

  if (type == 1) {
     return new Promise((resolve,reject)=>{
    //活体识别需要传入动作
    PPFace.faceliveness(config, result => {
      // console.log(result.base64ImageMap)
      //人脸对比
      resolve(result.base64ImageMap.bestImage0)
      //result.base64ImageMap 一个动作一张外加一张正面采集
      //result.base64ImageMap.bestImage0 为默认最佳照片

    });
    })
  } else {
    // //人像采集
  return new Promise((resolve,reject)=>{
    PPFace.recycler(config, result => {
      // console.log(result.base64ImageMap)
        resolve(result.base64ImageMap.bestImage0) 
        //result.base64ImageMap 图像集合 一张
        //result.originalPic  采集返回拍照（无黑边）原图（目前支持android 后续版本加入ios,需配置 hasPic=true）
      });
  })  
  }

}

function uploadFile(filePath){
 return new Promise((resolve,reject)=>{
   uni.uploadFile({
           url: Vue.prototype.$baseUrl+"/common/upload",//开发者服务器 url
           filePath: filePath,//要上传文件资源的路径
           name: 'file',//必须填file
            // header:{"Content-Type": "multipart/form-data"},
           success:  (res)=> {
            resolve(JSON.parse(res.data).data)
            
           },
           fail: function (err) {
            reject(err)
           },
         })
 }) 
}

function downFile(url,md5){
        const downloadTask = uni.downloadFile({
          url: url,
          success: res => {
            if (res.statusCode === 200) {
              let filePath = res.tempFilePath;
              uni.saveFile({
                tempFilePath: filePath,
                success: res => {
                  console.log(res.savedFilePath)
                  let savedFilePath = res.savedFilePath;
                  uni.setStorageSync(md5(url), savedFilePath);
                  
                }
              });
            } else {
              console.log('下载失败');
              uni.showToast({
                icon:'none',
                title:'下载失败'
              })
            }
          }
        });
      }
      // 定义一个深拷贝函数  接收目标target参数
   function deepClone(target) {
        // 定义一个变量
        let result;
        // 如果当前需要深拷贝的是一个对象的话
        if (typeof target === 'object') {
          // 如果是一个数组的话
          if (Array.isArray(target)) {
            result = []; // 将result赋值为一个数组，并且执行遍历
            for (let i in target) {
              // 递归克隆数组中的每一项
              result.push(this.deepClone(target[i]))
            }
            // 判断如果当前的值是null的话；直接赋值为null
          } else if (target === null) {
            result = null;
            // 判断如果当前的值是一个RegExp对象的话，直接赋值    
          } else if (target.constructor === RegExp) {
            result = target;
          } else {
            // 否则是普通对象，直接for in循环，递归赋值对象的所有值
            result = {};
            for (let i in target) {
              result[i] = this.deepClone(target[i]);
            }
          }
          // 如果不是对象的话，就是基本数据类型，那么直接赋值
        } else {
          result = target;
        }
        // 返回最终结果
        return result;
      }
       // 通过路径获取文件目录或文件对象
     function  resolveLocalFileSystemURL(url){
         return new Promise((resolve,reject)=>{
           plus.io.resolveLocalFileSystemURL(
             url,
             (entry) => {
               resolve(entry)
             },(err)=>{
               reject(err)
             })
         })
       }
module.exports = {
  getDirByTime,
  datedifference,
  getDate,
  validate,
  GetMacAdress,
  faceLicense,
  uploadFile,
  downFile,
  deepClone,
  resolveLocalFileSystemURL
}

//fmt格式 eg：yyyy/MM/dd hh:mm:ss
Date.prototype.Format = function(fmt) { //author: meizz   
  var o = {
    "M+": this.getMonth() + 1, //月份   
    "d+": this.getDate(), //日   
    "h+": this.getHours(), //小时   
    "m+": this.getMinutes(), //分   
    "s+": this.getSeconds(), //秒   
    "q+": Math.floor((this.getMonth() + 3) / 3), //季度   
    "S": this.getMilliseconds() //毫秒   
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  return fmt;
}

Date.prototype.AddDays = function(dateStr, dayCount) {
  var tempDate = new Date(dateStr.replace(/-/g, "/")); //把日期字符串转换成日期格式
  var resultDate = new Date((tempDate / 1000 + (86400 * dayCount)) * 1000); //增加n天后的日期
  var resultDateStr = resultDate.getFullYear() + "/" + (resultDate.getMonth() + 1) + "/" + (resultDate.getDate()); //将日期转化为字符串格式
  return resultDateStr;
}

// 将时间戳转换成时间格式
Date.prototype.getDateFromTime = function(ns) {
  var date = new Date(parseInt(ns)).Format('yyyy/MM/dd hh:mm:ss');
  return date
}
